Conditions | 1 |
Paths | 1 |
Total Lines | 124 |
Code Lines | 1 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | /*! |
||
39 | function init (converter) { |
||
40 | function api (key, value, attributes) { |
||
41 | var result; |
||
42 | if (typeof document === 'undefined') { |
||
43 | return; |
||
44 | } |
||
45 | |||
46 | // Write |
||
47 | |||
48 | if (arguments.length > 1) { |
||
49 | attributes = extend({ |
||
50 | path: '/' |
||
51 | }, api.defaults, attributes); |
||
52 | |||
53 | if (typeof attributes.expires === 'number') { |
||
54 | var expires = new Date(); |
||
55 | expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); |
||
56 | attributes.expires = expires; |
||
57 | } |
||
58 | |||
59 | // We're using "expires" because "max-age" is not supported by IE |
||
60 | attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; |
||
61 | |||
62 | try { |
||
63 | result = JSON.stringify(value); |
||
64 | if (/^[\{\[]/.test(result)) { |
||
65 | value = result; |
||
66 | } |
||
67 | } catch (e) {} |
||
68 | |||
69 | if (!converter.write) { |
||
70 | value = encodeURIComponent(String(value)) |
||
71 | .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); |
||
72 | } else { |
||
73 | value = converter.write(value, key); |
||
74 | } |
||
75 | |||
76 | key = encodeURIComponent(String(key)); |
||
77 | key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); |
||
78 | key = key.replace(/[\(\)]/g, escape); |
||
79 | |||
80 | var stringifiedAttributes = ''; |
||
81 | |||
82 | for (var attributeName in attributes) { |
||
83 | if (!attributes[attributeName]) { |
||
84 | continue; |
||
85 | } |
||
86 | stringifiedAttributes += '; ' + attributeName; |
||
87 | if (attributes[attributeName] === true) { |
||
88 | continue; |
||
89 | } |
||
90 | stringifiedAttributes += '=' + attributes[attributeName]; |
||
91 | } |
||
92 | return (document.cookie = key + '=' + value + stringifiedAttributes); |
||
93 | } |
||
94 | |||
95 | // Read |
||
96 | |||
97 | if (!key) { |
||
98 | result = {}; |
||
99 | } |
||
100 | |||
101 | // To prevent the for loop in the first place assign an empty array |
||
102 | // in case there are no cookies at all. Also prevents odd result when |
||
103 | // calling "get()" |
||
104 | var cookies = document.cookie ? document.cookie.split('; ') : []; |
||
105 | var rdecode = /(%[0-9A-Z]{2})+/g; |
||
106 | var i = 0; |
||
107 | |||
108 | for (; i < cookies.length; i++) { |
||
109 | var parts = cookies[i].split('='); |
||
110 | var cookie = parts.slice(1).join('='); |
||
111 | |||
112 | if (cookie.charAt(0) === '"') { |
||
113 | cookie = cookie.slice(1, -1); |
||
114 | } |
||
115 | |||
116 | try { |
||
117 | var name = parts[0].replace(rdecode, decodeURIComponent); |
||
118 | cookie = converter.read ? |
||
119 | converter.read(cookie, name) : converter(cookie, name) || |
||
120 | cookie.replace(rdecode, decodeURIComponent); |
||
121 | |||
122 | if (this.json) { |
||
123 | try { |
||
124 | cookie = JSON.parse(cookie); |
||
125 | } catch (e) {} |
||
126 | } |
||
127 | |||
128 | if (key === name) { |
||
129 | result = cookie; |
||
130 | break; |
||
131 | } |
||
132 | |||
133 | if (!key) { |
||
134 | result[name] = cookie; |
||
135 | } |
||
136 | } catch (e) {} |
||
137 | } |
||
138 | |||
139 | return result; |
||
140 | } |
||
141 | |||
142 | api.set = api; |
||
143 | api.get = function (key) { |
||
144 | return api.call(api, key); |
||
145 | }; |
||
146 | api.getJSON = function () { |
||
147 | return api.apply({ |
||
148 | json: true |
||
149 | }, [].slice.call(arguments)); |
||
150 | }; |
||
151 | api.defaults = {}; |
||
152 | |||
153 | api.remove = function (key, attributes) { |
||
154 | api(key, '', extend(attributes, { |
||
155 | expires: -1 |
||
156 | })); |
||
157 | }; |
||
158 | |||
159 | api.withConverter = init; |
||
160 | |||
161 | return api; |
||
162 | } |
||
163 | |||
166 |
This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.
To learn more about declaring variables in Javascript, see the MDN.